package service

import (
	"errors"
	"ginvueadmin/global"
	"ginvueadmin/models"
	"ginvueadmin/utils"

	"gorm.io/gorm"
)

// 用户登录
func Login(u *models.SysUser) (userInter *models.SysUser, err error) {
	/*
		1. 声明 user 模型
		2. 把传入的 password 通过 md5 加密
		3. gorm 入库
		4. 返回 err 与 user
	*/

	var user models.SysUser
	u.Password = utils.MD5V([]byte(u.Password))
	err = global.DB.Where("username = ? AND password = ?", u.Username, u.Password).Preload("Authority").First(&user).Error

	return &user, err
}

func Register(u models.SysUser) (userInter models.SysUser, err error) {
	/*
		1. 定义 user 的 SysUser 结构体，用于存储入库的用户信息
		2. 查询 sys_user 表，判断用户名是否已注册
		3. 将 password 通过 md5 加密
		4. 构建入库所需要字段，uuid、userinfo
		5. 通过 Create 方法入库
	*/
	var user models.SysUser
	if !errors.Is(global.DB.Where("username = ?", u.Username).First(&user).Error, gorm.ErrRecordNotFound) {
		return user, errors.New("用户名已存在")
	}

	u.Password = utils.MD5V([]byte(u.Password))
	u.UUID = utils.GenerateUUID()

	err = global.DB.Create(&u).Error
	return u, err
}
